Repository navigation
copilot-theorem: Translate quantifiers correctly in Kind2 backend. Refs #594. - #610
Merged
ivanperez-keera merged 3 commits intoApr 19, 2025
Conversation
RyanGlScott
force-pushed
the
develop-kind2-respect-quantifiers-T594
branch
from
March 27, 2025 22:05
07fc92b to
4af1ccb
Compare
Member
|
Change Manager: Please see the comments above regarding alignment. |
RyanGlScott
force-pushed
the
develop-kind2-respect-quantifiers-T594
branch
from
April 14, 2025 10:48
4af1ccb to
595a6d8
Compare
Collaborator
Author
|
Implementor: Fix implemented, review requested. |
Member
|
Change Manager: Please rebase branch wrt. the latest |
`copilot-theorem`'s Kind2 backend takes a proposition and attempts to prove that it is valid at all possible time steps. Currently, this happens regardless of whether the proposition is universally or existentially quantified. This is unsound, and it can lead to valid, existentially quantified properties being incorrectly labeled as invalid. This commit adds information about propositions' quantifiers to the Kind2 backend's implementation so that it may use the quantifiers when translating the properties to Kind2. This is accomplished by updating `specProps` to map each proposition's identifier to its corresponding `copilot-core` `Prop`.
Copilot-Language#594. `copilot-theorem`'s Kind2 backend takes a proposition and attempts to prove that it is valid at all possible time steps. Currently, this happens regardless of whether the proposition is universally or existentially quantified. This is unsound, and it can lead to valid, existentially quantified properties being incorrectly labeled as invalid. This commit fixes the translations of propositions to Kind2 (via Kind2's TransSys backend) such that the translated properties respect quantifier information. Specifically, this replaces an unsound use of the `extractProp` function with an analysis that translates the property differently depending on whether it is universally or existentially quantified. Because all TransSys propositions use universal quantification, we convert an existentially quantified property `∃x.P(x)` as `¬(∀x.¬(P(x)))` during the translation to TransSys.
RyanGlScott
force-pushed
the
develop-kind2-respect-quantifiers-T594
branch
from
April 17, 2025 11:29
595a6d8 to
3b51c96
Compare
Collaborator
Author
|
Implementor: Fix implemented, review requested. |
Member
|
Change Manager: Verified that:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
copilot-theorem's Kind2 backend takes a proposition and attempts to prove that it is valid at all possible time steps. Currently, this happens regardless of whether the proposition is universally or existentially quantified. This is unsound, and it can lead to valid, existentially quantified properties being incorrectly labeled as invalid.This commit fixes the translations of propositions to Kind2 (via Kind2's TransSys backend) such that the translated properties respect quantifier information. Specifically, this replaces an unsound use of the
extractPropfunction with an analysis that translates the property differently depending on whether it is universally or existentially quantified. Because all TransSys propositions use universal quantification, we convert an existentially quantified property∃x.P(x)as¬(∀x.¬(P(x)))during the translation to TransSys.Fixes #594.